package common;

import java.util.List;

import nsga.Individual;


public interface GeneticOperations<Genotype> {

	public void mutate(Genotype genotype);

	public List<Genotype> crossover(Genotype g1, Genotype g2);

	/**
	 * Liczy wartości funkcji celu dla podanego genotypu.
	 */
	public List<Double> getValues(Genotype genotype);

	/**
	 * Transform from value of function to fitness
	 */
	public List<Double> getFitnessesFromValue(List<Double> values);

	public Genotype createRandomGenotype();
	
	public Genotype duplicateGenotype(Genotype genotype);
	
	public Genotype createGenotypeFromString(String genotype);

	public List<Individual<Genotype>> createAllResults();
	
}
